package global

import (
	"autoclave/utils/tools"
	"flag"
	"fmt"
	"gopkg.in/ini.v1"
	"log"
	"os"
	"path"
	"path/filepath"
)

var AppConfig *ini.File

var RootPath string
var EquipOfflineTimeout int64
var StaticPath string
var StaticUrl string

// RootPath 永远是配置文件所在目录; 程序启动先找config.ini, 找到 config.ini 的目录即根目录
// runtime 日志目录在 RootPath 下
// static  静态文件目录在 RootPath 下
func init() {
	// 配置文件位置
	configPathP := flag.String("config_path", "", "app running dir")
	flag.Parse()
	configPath := *configPathP

	// 程序运行目录
	exePath, err := os.Executable()
	if err != nil {
		log.Fatal(err)
	}
	RootPath = filepath.Dir(exePath)
	fmt.Println("AppRunPath =", RootPath)

	if configPath == "" {
		// 默认运行目录,运行目录没有则使用相对目录
		exist, _ := tools.FileExist(RootPath + "/config.ini")
		if exist {
			configPath = RootPath + "/config.ini"
		} else {
			configPath = "config.ini"
		}
	}
	RootPath = filepath.Dir(configPath)
	StaticPath = path.Join(RootPath, "static")

	fmt.Println("RootPath =", RootPath)
	fmt.Println("configPath =", configPath)
	fmt.Println("StaticPath =", StaticPath)
	config, err := ini.Load(configPath)
	if err != nil {
		fmt.Println("ini.Load error: ", err)
		os.Exit(1)
	}
	AppConfig = config
	fmt.Printf("%-32s%-32s\n", "config load", "OK")
	ReLoadConfig(false)
}

func ReLoadConfig(reload bool) {
	if reload == true {
		err := AppConfig.Reload()
		if err != nil {
			fmt.Println("AppConfig.Reload() error: ", err)
			return
		}
	}
	StaticUrl = AppConfig.Section("").Key("static_url").String()

}
